package com.scs.application.modules.settlement.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 开票单实体对象
 *
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class InvoiceVO implements Serializable {

    /**
     * 单号
     */
    private String code;

    /**
     * 院方ID
     */
    @NotBlank(message = "院方ID不能为空")
    @Length(min = 1, max = 20, message = "院方ID长度必须介于 1 和 20 之间")
    private String hospitalId;

    /**
     * 院方名称
     */
    @NotBlank(message = "院方名称不能为空")
    @Length(min = 1, max = 50, message = "院方名称长度必须介于 1 和 50 之间")
    private String hospitalName;

    /**
     * 供应商ID
     */
    private String supplierId;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 开票时间
     */
    private java.util.Date gmtMakeOut;

    /**
     * 开票人
     */
    private String drawer;

    /**
     * 开票金额
     */
    @NotNull(message = "开票金额不能为空")
    private Double totalAmount;

    /**
     * 税务发票号
     */
    @NotNull(message = "税务发票号不能为空")
    private String invoiceNo;

    /**
     * 备注
     */
    private String remark;

    /**
     * 审核人
     */
    private String auditorName;

    /**
     * 审核时间
     */
    private java.util.Date gmtAudited;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 开票id
     */
    private String id;

    /**
     * 期号
     */
    private String periodNo;

    /**
     * 记帐单明细
     */
    private List<BillItemVO> items;
}
